package com.lottery.game.core.modules.entity.user;

import com.lottery.game.common.BaseObject;
import com.lottery.game.common.utils.MD5Util;
import com.lottery.game.common.utils.MakeNoUtil;
import com.lottery.game.common.utils.UUIDUtils;
import com.lottery.game.core.model.request.register.RegisterV2Request;

import java.math.BigDecimal;
import java.util.Date;

import lombok.Data;

/**
 * 游戏用户Entity
 * @author chenye
 */
@Data
public class GameUser extends BaseObject {

	private String username;		// 用户名
	private String password;		// 密码
	private String salt;		// 盐
	private String nickname;		// 昵称
	private String phone;		// 电话
	@Deprecated
	private String photo;		// 头像(已废弃，不用）
	private String no;		// 用户帐号
	private String balance;		// 余额
	private String point;		// 积分
	private String wechat;		// 微信
	private String qq;		// qq
	private String introducer;//介绍人
	private String alipay;		// 支付宝账号
	private String account;		// 下分账户
	private String ip;		// ip
	private String agent;		// 代理
	private String superiors;		// 上级
	private String createAdress;		// 创建地区
	private String status;		// 禁言状态(0或null：正常状态，未禁言，1：已禁言)
	private String roomNo;		// 房号
	private String photourl;// 头像路径
	private String fenghaostatus;// 封号状态(0或null：正常状态，未封号，1：封号,2：已封IP)
	private String fengip;//(此这段已废弃，不用)
	private String gameusernumber;// 排序编号
	private String user_online_status;//用户在线状态（0：离线，1：在线）
	private String payment_assword;//支付密码

	private String passzhongjie;//虚拟属性（数据库中没有该字段）
	private String passzhongjiepayment;//虚拟属性（数据库中没有该字段）

	private String usertype;//用户类型
	private String tuijianplayer;//推荐玩家
	private String gexingqianming;//个性签名
	private String registerip;//注册IP
	private String lastlogin;//最后登录

	private Date register_time;//注册时间

	private String register_ip_area;//注册IP地区
	private Date loginTime;	//登录时间
	private String login_ip_area;//登录IP地区
	private String loginEnvironment;//登录环境

	private String setyue;//余额操作数值
	private String setyuestyle;//余额操作类型

	private String id;
	private String remarks;	// 备注
	private String createBy;	// 创建者
	private Date createDate;	// 创建日期
	private String updateBy;	// 更新者
	private Date updateDate;	// 更新日期
	private String delFlag; 	// 删除标记（0：正常；1：删除；2：审核）

	private Date agent_date; //成为某人的下级时间

	private BigDecimal previousBalance;
	private Integer version;

	public GameUser(String id,
					 String username,
					 String password,
					 String phone,
					 String no,
					 String salt,
					 String qq,
					 String introducer,String register_ip_area,Date register_time) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
		this.salt = salt;
		this.phone = phone;
		this.no = no;
		this.qq = qq;
		this.introducer = introducer;
		this.register_ip_area=register_ip_area;
		this.register_time=register_time;
	}

	public GameUser() {}

	public static GameUser valueOf(RegisterV2Request request) {
		GameUser user = new GameUser();
		user.id = UUIDUtils.randomUUID();
		user.username = request.getUsername();
		user.qq = request.getQq();
		//特殊处理
		user.nickname = request.getUsername();
		user.phone = request.getPhone();
		//盐。 随机生成
		String salt = UUIDUtils.randomUUID();
		//生成订单号
		String no = MakeNoUtil.makeOrderNum();
		//密码加盐
		String pwd = MD5Util.MD532(MD5Util.MD532(request.getPassword()), salt);
		//设置初始密码为123456
		String paymentPassword = MD5Util.MD532(MD5Util.MD532("123456"), salt);
		user.payment_assword =paymentPassword;
		user.salt = salt;
		user.no = no;
		user.password = pwd;
		return user;
	}

 }
